/*
 * Hilo_Recibidor.cpp
 *
 *  Created on: 28/05/2012
 *      Author: sebastian
 */

#include "Hilo_Recibidor.h"
#include "Consulta.h"

Hilo_Recibidor::Hilo_Recibidor(Servidor& s, Socket* sock) : serv(s), socket(sock) {
	stop();
}

Hilo_Recibidor::~Hilo_Recibidor() {
}

void Hilo_Recibidor::run() {
	char buffer[BUFFER_SIZE];
	Cola<Consulta*>* consultas = serv.getColaConsultas();
	while(isRunning()) {
		int cant = socket->recibir(buffer, BUFFER_SIZE);
		if(cant < 0)
			stop();
		else {
			std::string s_consulta(buffer);
			Consulta* cons = new Consulta();
			cons->hidratar(s_consulta);
			cons->setId(socket->getFd());
			consultas->push(cons);
		}
	}
}
